package demo5;


public class Test {


    public static void main(String[] args) {
        Dog dog1=new Dog("HHHH",55);
        dog1.bark();
        System.out.println("===========");

        Animal animal=new Dog("asassas",39);
        Animal animal1=dog1;
        //向上转型的注意事项：
        //1.通过父类的引用  调用子类特有的方法 是无法直接调用的(animal调用bark())，只能调用父类自己的方法
//        animal.bark();
        animal1.eat();
    }
    public static void func1(Animal animal){

    }

    public static Animal func2(){
        Dog dog1=new Dog("hh",10);
        return dog1;
    }

    public static void main1(String[] args) {
        //向上转型：把子类的对象给到父类进行引用(父类引用  引用了子类对象)
        //子类new Dog出来的对象给到父类的对象Animal进行引用
        Dog dog1=new Dog("小狗",20);
        Animal animal=dog1;

        //实现向上转型的方式
        //1.直接赋值
        Animal animal1=new Dog("小黄",40);

        //2.方法的传参
        Dog dog2=new Dog("小黄",30);
        func1(dog2);

        //3.返回值
        Animal animal2=func2();//和方式1相类似
    }

}
